﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleData.ObjectModel
{
	public static class NamespaceScopeExtensions
	{
		//private static NamespaceScopeManager manager = new NamespaceScopeManager();

		public static IDisposable WithNamespace( this INamespaceContainer container, string ns )
		{
			var scope = new NamespaceScope( ns, container );
			container.UsingNamespace = scope;
			return scope;
		}

		public static string EnsureFullName( this INamespaceContainer container, string name )
		{
			if ( FieldName.IsFullName( name ) )
				return name;
			else
			{
				if ( container.UsingNamespace == null )
					throw new InvalidOperationException( String.Format( "Nenhum scope de namespace foi definido. Não foi possível obter o fullname do campo \"{0}\".", name ) );
				return String.Concat( container.UsingNamespace.Namespace, "[", name, "]" );
			}
		}
	}
}
